package org.neurone.session;

import org.neurone.application.api.SessionAPI;

public interface SessionHive extends SessionAPI {

    /**
     * 获取当前登录用户的session标识
     * @return 如会话有效，则返回经过加密的session标识，否则返回空字符串
     */
    String getNowSessionKey();

    /**
     * 注册登录
     * @param userID 统一用户ID
     * @param passwd 密码
     */
    boolean loginSession(String userID, String passwd);

    /**
     * 获取当前合法会话的一次性token
     * @return 如果会话合法则返回一个一次性token标识，否则返回null
     */
    String getNewToken();

    
    /**
     * 检测当前会话是否有效
     * @return 如果会话合法则返回当前会话的用户ID，否则返回null
     */
    String checkSession();
    
    /**
     * 退出登录
     */
    void logoutSession();

    /**
     * 通过当前会话 userID 获取 sessionKey
     * 如果没有，则返回null
     * @param userId
     * @return
     */
    String getSessionKey();
    
    /**
     * 检验指定session标识是否为有效登录
     * @param sessonKey session标识
     * @return 如果有效则返回当前登录的用户标识，否则返回为空字符串
     */
    String checkSessionKey(String sessionKey);
}
